package car

import (
	"github.com/gin-gonic/gin"

	"ser1/utils"
)

// insertCarMapAi 创建新的地图AI记录
// @Summary 创建地图AI
// @Description 创建新的地图AI记录并保存到数据库  {"title": "地图AI", "json_data": {}, "remark": "地图AI的详细描述", "status": 1}
// @Tags 地图AI
// @Accept json
// @Produce json
// @Param data body CarMapAiDto true "地图AI数据"
// @Success 200 {object} utils.Response "成功创建并返回记录ID"
// @Failure 400 {object} utils.Response "参数错误"
// @Failure 500 {object} utils.Response "服务器内部错误"
// @Router /car/public/map/ai/insert [post]
func insertCarMapAi(c *gin.Context) {
	var dto CarMapAiDto
	if err := c.ShouldBindJSON(&dto); err != nil {
		utils.PrarmError(c)
		return
	}
	var m CarMapAi
	dto.toModel(&m)
	m.ID = 0
	m.Status = 1
	DB1().Create(&m)
	utils.ResponseSuccess(c, m.ID)
}

// getRandMapAi 随机获取一条地图AI记录
// @Summary 随机获取地图AI
// @Description 随机获取一条状态为有效的地图AI记录
// @Tags 地图AI
// @Accept json
// @Produce json
// @Success 200 {object} utils.Response "成功返回随机地图AI记录"
// @Failure 400 {object} utils.Response "参数错误"
// @Failure 500 {object} utils.Response "服务器内部错误"
// @Router /car/public/map/ai/random [get]
func getRandMapAi(c *gin.Context) {
	m, err := getRand()
	if err != nil {
		utils.ResponseError(c, 500, "获取随机地图AI记录失败")
		return
	}
	dto := m.toDto()

	utils.ResponseSuccess(c, dto)

}

// insertjson 创建新的地图AI记录 (JSON格式)
// @Summary 创建地图AI (JSON格式)
// @Description 创建新的地图AI记录并保存到数据库，直接使用JSON数据 {"json_data": {}}
// @Tags 地图AI
// @Accept json
// @Produce json
// @Param data body object true "地图AI的JSON数据"
// @Success 200 {object} utils.Response "成功创建并返回记录ID"
// @Failure 400 {object} utils.Response "参数错误"
// @Failure 500 {object} utils.Response "服务器内部错误"
// @Router /car/public/map/ai/insertjson [post]
func aiMapinsertjson(c *gin.Context) {
	var request interface{}
	if err := c.ShouldBindJSON(&request); err != nil {
		utils.PrarmError(c)
		return
	}
	var m CarMapAi
	m.JsonData = utils.ToJson(request)
	err := DB1().Create(&m).Error
	if err != nil {
		utils.ResponseError(c, 500, "插入数据失败")
		return
	}
	utils.ResponseSuccess(c, m.ID)
}

// getRandJson 随机获取一条地图AI记录 (JSON格式) 支持get與post
// @Summary 随机获取地图AI (JSON格式)
// @Description 随机获取一条状态为有效的地图AI记录，返回JSON数据
// @Tags 地图AI
// @Accept json
// @Produce json
// @Success 200 {object} utils.Response "成功返回随机地图AI记录的JSON数据"
// @Failure 400 {object} utils.Response "参数错误"
// @Failure 500 {object} utils.Response "服务器内部错误"
// @Router /car/public/map/ai/getrandjson [get][post]
func aiMapGetRandJson(c *gin.Context) {
	m, err := getRand()
	if err != nil {
		utils.ResponseError(c, 500, "获取随机地图AI记录失败")
		return
	}
	utils.ResponseSuccess(c, utils.ToInterface(m.JsonData))

}
